/**
 *
 * 版权所有 © cybersky.com
 *
 */
package cn.cybertron.primus.report.dataprovider;

import cn.cybertron.primus.report.data.QueryRange;
import cn.cybertron.primus.report.data.ReportData;
import cn.cybertron.primus.report.data.ReportDataCache;
import cn.cybertron.primus.report.query.ReportQuery;

/**
 * 报表数据提供器接口
 * @author ch
 *
 */
public interface ReportDataProvider<T extends ReportQuery> {

	/**
	 * 根据报表数据查询器，时间范围，记录数限制条件查询出报表数据
	 * @param query
	 * @param limit
	 * @param qr
	 * @return
	 * @throws Exception
	 */
	public ReportData getData(T query, int limit, QueryRange qr) throws Exception;

	/**
	 * 根据报表数据查询器，时间范围，记录数限制条件，报表缓存数据 出报表数据
	 * @param query
	 * @param limit
	 * @param qr
	 * @param datacache
	 * @return
	 * @throws Exception
	 */
	public ReportData getData(T query, int limit, QueryRange qr, ReportDataCache datacache) throws Exception;
    
}
